/**
 *
 */
import { isArray } from 'fc-cli-core'
class FCRuleFactorValue {
  key
  value // value 是实际数据值
  #label

  // label 是界面上显示的值
  get label() {
    // 如果初始化时已经为 #label 赋值，是枚举 factor 的 #label，直接返回 #label
    if (this.#label) {
      return this.#label
    }

    // todo
    // 由 rule 创建的 value 需要通过 factor.options, factor.render() 获取 label
    // 默认 label 为 value
    const { options } = this.factor
    if (isArray(options) && options.length > 0) {
      const findOption = options.find((option) => String(option.value) === String(this.value))
      if (findOption) {
        return findOption.label
      }
    }
    return this.value
  }

  set label(newLabel) {
    this.#label = newLabel
  }

  /* lifecycle methods */

  constructor({ key, value, label, factor } = {}) {
    this.key = key
    this.value = value
    this.label = label
    this.factor = factor
  }

  /* public methods */

  /* private methods */
}

export default FCRuleFactorValue
